Для улучшения чтения программы я вынес код для получения и проверки имени хоста в отдельную процедуру, кроме этого все return по ошибке я заменил на exit, и правда чего волынить то ?
void SocketGetHostName()
{
char chInfo[64];
if (gethostname(chInfo,sizeof(chInfo)))
{
printf("Not local host\n");
exit(1);
}
else
{
printf(chInfo);
printf(" GetHostName OK !!!!!\n");
}
}
Вносим изменения в WaitSocket для создания сокета.
void WaitSocket()
{
SocketGetHostName();
SOCKET servsocket;
servsocket = socket(PF_INET,SOCK_STREAM,DEFAULT_PROTOCOL);
if (servsocket==INVALID_SOCKET)
{
printf("Error create socket :-(\n");
exit(1);
}
closesocket(servsocket);
}
Заводим переменную SOCKET, вот как она описана в #include "winsock.h"
/* * The new type to be used in all * instances which refer to sockets. */ typedef u_int SOCKET;После чего вызываем socket, которая его и создает. Дальше указывается тип потока и протокол.
SOCK_STREAM - TCP SOCK_DGRAM - UDPПротокол мы использовали по умолчанию. Результат возврата надо проверить на INVALID_SOCKET, мало ли чего ??? После работы сокет необходимо закрыть. Вообще все что открываешь нужно и закрывать. Как входную дверь :-))).